/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package EA_Model.IEC61970.Wires.impl;

import EA_Model.IEC61970.Domain.ActivePower;
import EA_Model.IEC61970.Domain.ApparentPower;
import EA_Model.IEC61970.Domain.Damping;
import EA_Model.IEC61970.Domain.PU;
import EA_Model.IEC61970.Domain.PerCent;
import EA_Model.IEC61970.Domain.Reactance;
import EA_Model.IEC61970.Domain.ReactivePower;
import EA_Model.IEC61970.Domain.Resistance;
import EA_Model.IEC61970.Domain.Seconds;
import EA_Model.IEC61970.Domain.Voltage;

import EA_Model.IEC61970.Wires.CoolantType;
import EA_Model.IEC61970.Wires.SynchronousMachine;
import EA_Model.IEC61970.Wires.SynchronousMachineOperatingMode;
import EA_Model.IEC61970.Wires.SynchronousMachineType;
import EA_Model.IEC61970.Wires.WiresPackage;

import org.eclipse.emf.common.notify.Notification;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;

import org.eclipse.emf.ecore.impl.ENotificationImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Synchronous Machine</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getAVRToManualLag <em>AVR To Manual Lag</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getAVRToManualLead <em>AVR To Manual Lead</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getBaseQ <em>Base Q</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getCondenserP <em>Condenser P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getCoolantCondition <em>Coolant Condition</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getCoolantType <em>Coolant Type</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getDamping <em>Damping</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getInertia <em>Inertia</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getManualToAVR <em>Manual To AVR</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getMaxQ <em>Max Q</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getMaxU <em>Max U</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getMinQ <em>Min Q</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getMinU <em>Min U</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getOperatingMode <em>Operating Mode</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getQPercent <em>QPercent</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getR <em>R</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getR0 <em>R0</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getR2 <em>R2</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getRatedS <em>Rated S</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getReferencePriority <em>Reference Priority</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getType <em>Type</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getX <em>X</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getX0 <em>X0</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getX2 <em>X2</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getXDirectSubtrans <em>XDirect Subtrans</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getXDirectSync <em>XDirect Sync</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getXDirectTrans <em>XDirect Trans</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getXQuadSubtrans <em>XQuad Subtrans</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getXQuadSync <em>XQuad Sync</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Wires.impl.SynchronousMachineImpl#getXQuadTrans <em>XQuad Trans</em>}</li>
 * </ul>
 * </p>
 *
 * @generated
 */
public class SynchronousMachineImpl extends RegulatingCondEqImpl implements SynchronousMachine {
	/**
	 * The cached value of the '{@link #getAVRToManualLag() <em>AVR To Manual Lag</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getAVRToManualLag()
	 * @generated
	 * @ordered
	 */
	protected Seconds aVRToManualLag;

	/**
	 * The cached value of the '{@link #getAVRToManualLead() <em>AVR To Manual Lead</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getAVRToManualLead()
	 * @generated
	 * @ordered
	 */
	protected Seconds aVRToManualLead;

	/**
	 * The cached value of the '{@link #getBaseQ() <em>Base Q</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getBaseQ()
	 * @generated
	 * @ordered
	 */
	protected ReactivePower baseQ;

	/**
	 * The cached value of the '{@link #getCondenserP() <em>Condenser P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getCondenserP()
	 * @generated
	 * @ordered
	 */
	protected ActivePower condenserP;

	/**
	 * The cached value of the '{@link #getCoolantCondition() <em>Coolant Condition</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getCoolantCondition()
	 * @generated
	 * @ordered
	 */
	protected EA_Model.IEC61970.Domain.Float coolantCondition;

	/**
	 * The default value of the '{@link #getCoolantType() <em>Coolant Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getCoolantType()
	 * @generated
	 * @ordered
	 */
	protected static final CoolantType COOLANT_TYPE_EDEFAULT = CoolantType.AIR;

	/**
	 * The cached value of the '{@link #getCoolantType() <em>Coolant Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getCoolantType()
	 * @generated
	 * @ordered
	 */
	protected CoolantType coolantType = COOLANT_TYPE_EDEFAULT;

	/**
	 * The cached value of the '{@link #getDamping() <em>Damping</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getDamping()
	 * @generated
	 * @ordered
	 */
	protected Damping damping;

	/**
	 * The cached value of the '{@link #getInertia() <em>Inertia</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getInertia()
	 * @generated
	 * @ordered
	 */
	protected PU inertia;

	/**
	 * The cached value of the '{@link #getManualToAVR() <em>Manual To AVR</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getManualToAVR()
	 * @generated
	 * @ordered
	 */
	protected Seconds manualToAVR;

	/**
	 * The cached value of the '{@link #getMaxQ() <em>Max Q</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMaxQ()
	 * @generated
	 * @ordered
	 */
	protected ReactivePower maxQ;

	/**
	 * The cached value of the '{@link #getMaxU() <em>Max U</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMaxU()
	 * @generated
	 * @ordered
	 */
	protected Voltage maxU;

	/**
	 * The cached value of the '{@link #getMinQ() <em>Min Q</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMinQ()
	 * @generated
	 * @ordered
	 */
	protected ReactivePower minQ;

	/**
	 * The cached value of the '{@link #getMinU() <em>Min U</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMinU()
	 * @generated
	 * @ordered
	 */
	protected Voltage minU;

	/**
	 * The default value of the '{@link #getOperatingMode() <em>Operating Mode</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getOperatingMode()
	 * @generated
	 * @ordered
	 */
	protected static final SynchronousMachineOperatingMode OPERATING_MODE_EDEFAULT = SynchronousMachineOperatingMode.GENERATOR;

	/**
	 * The cached value of the '{@link #getOperatingMode() <em>Operating Mode</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getOperatingMode()
	 * @generated
	 * @ordered
	 */
	protected SynchronousMachineOperatingMode operatingMode = OPERATING_MODE_EDEFAULT;

	/**
	 * The cached value of the '{@link #getQPercent() <em>QPercent</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getQPercent()
	 * @generated
	 * @ordered
	 */
	protected PerCent qPercent;

	/**
	 * The cached value of the '{@link #getR() <em>R</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getR()
	 * @generated
	 * @ordered
	 */
	protected Resistance r;

	/**
	 * The cached value of the '{@link #getR0() <em>R0</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getR0()
	 * @generated
	 * @ordered
	 */
	protected Resistance r0;

	/**
	 * The cached value of the '{@link #getR2() <em>R2</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getR2()
	 * @generated
	 * @ordered
	 */
	protected Resistance r2;

	/**
	 * The cached value of the '{@link #getRatedS() <em>Rated S</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getRatedS()
	 * @generated
	 * @ordered
	 */
	protected ApparentPower ratedS;

	/**
	 * The cached value of the '{@link #getReferencePriority() <em>Reference Priority</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getReferencePriority()
	 * @generated
	 * @ordered
	 */
	protected EA_Model.IEC61970.Domain.Integer referencePriority;

	/**
	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getType()
	 * @generated
	 * @ordered
	 */
	protected static final SynchronousMachineType TYPE_EDEFAULT = SynchronousMachineType.GENERATOR;

	/**
	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getType()
	 * @generated
	 * @ordered
	 */
	protected SynchronousMachineType type = TYPE_EDEFAULT;

	/**
	 * The cached value of the '{@link #getX() <em>X</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getX()
	 * @generated
	 * @ordered
	 */
	protected Reactance x;

	/**
	 * The cached value of the '{@link #getX0() <em>X0</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getX0()
	 * @generated
	 * @ordered
	 */
	protected Reactance x0;

	/**
	 * The cached value of the '{@link #getX2() <em>X2</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getX2()
	 * @generated
	 * @ordered
	 */
	protected Reactance x2;

	/**
	 * The cached value of the '{@link #getXDirectSubtrans() <em>XDirect Subtrans</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getXDirectSubtrans()
	 * @generated
	 * @ordered
	 */
	protected Reactance xDirectSubtrans;

	/**
	 * The cached value of the '{@link #getXDirectSync() <em>XDirect Sync</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getXDirectSync()
	 * @generated
	 * @ordered
	 */
	protected Reactance xDirectSync;

	/**
	 * The cached value of the '{@link #getXDirectTrans() <em>XDirect Trans</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getXDirectTrans()
	 * @generated
	 * @ordered
	 */
	protected Reactance xDirectTrans;

	/**
	 * The cached value of the '{@link #getXQuadSubtrans() <em>XQuad Subtrans</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getXQuadSubtrans()
	 * @generated
	 * @ordered
	 */
	protected Reactance xQuadSubtrans;

	/**
	 * The cached value of the '{@link #getXQuadSync() <em>XQuad Sync</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getXQuadSync()
	 * @generated
	 * @ordered
	 */
	protected Reactance xQuadSync;

	/**
	 * The cached value of the '{@link #getXQuadTrans() <em>XQuad Trans</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getXQuadTrans()
	 * @generated
	 * @ordered
	 */
	protected Reactance xQuadTrans;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SynchronousMachineImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return WiresPackage.Literals.SYNCHRONOUS_MACHINE;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Seconds getAVRToManualLag() {
		if (aVRToManualLag != null && aVRToManualLag.eIsProxy()) {
			InternalEObject oldAVRToManualLag = (InternalEObject)aVRToManualLag;
			aVRToManualLag = (Seconds)eResolveProxy(oldAVRToManualLag);
			if (aVRToManualLag != oldAVRToManualLag) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__AVR_TO_MANUAL_LAG, oldAVRToManualLag, aVRToManualLag));
			}
		}
		return aVRToManualLag;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Seconds basicGetAVRToManualLag() {
		return aVRToManualLag;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setAVRToManualLag(Seconds newAVRToManualLag) {
		Seconds oldAVRToManualLag = aVRToManualLag;
		aVRToManualLag = newAVRToManualLag;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__AVR_TO_MANUAL_LAG, oldAVRToManualLag, aVRToManualLag));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Seconds getAVRToManualLead() {
		if (aVRToManualLead != null && aVRToManualLead.eIsProxy()) {
			InternalEObject oldAVRToManualLead = (InternalEObject)aVRToManualLead;
			aVRToManualLead = (Seconds)eResolveProxy(oldAVRToManualLead);
			if (aVRToManualLead != oldAVRToManualLead) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__AVR_TO_MANUAL_LEAD, oldAVRToManualLead, aVRToManualLead));
			}
		}
		return aVRToManualLead;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Seconds basicGetAVRToManualLead() {
		return aVRToManualLead;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setAVRToManualLead(Seconds newAVRToManualLead) {
		Seconds oldAVRToManualLead = aVRToManualLead;
		aVRToManualLead = newAVRToManualLead;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__AVR_TO_MANUAL_LEAD, oldAVRToManualLead, aVRToManualLead));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ReactivePower getBaseQ() {
		if (baseQ != null && baseQ.eIsProxy()) {
			InternalEObject oldBaseQ = (InternalEObject)baseQ;
			baseQ = (ReactivePower)eResolveProxy(oldBaseQ);
			if (baseQ != oldBaseQ) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__BASE_Q, oldBaseQ, baseQ));
			}
		}
		return baseQ;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ReactivePower basicGetBaseQ() {
		return baseQ;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setBaseQ(ReactivePower newBaseQ) {
		ReactivePower oldBaseQ = baseQ;
		baseQ = newBaseQ;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__BASE_Q, oldBaseQ, baseQ));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower getCondenserP() {
		if (condenserP != null && condenserP.eIsProxy()) {
			InternalEObject oldCondenserP = (InternalEObject)condenserP;
			condenserP = (ActivePower)eResolveProxy(oldCondenserP);
			if (condenserP != oldCondenserP) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__CONDENSER_P, oldCondenserP, condenserP));
			}
		}
		return condenserP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ActivePower basicGetCondenserP() {
		return condenserP;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setCondenserP(ActivePower newCondenserP) {
		ActivePower oldCondenserP = condenserP;
		condenserP = newCondenserP;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__CONDENSER_P, oldCondenserP, condenserP));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Float getCoolantCondition() {
		if (coolantCondition != null && coolantCondition.eIsProxy()) {
			InternalEObject oldCoolantCondition = (InternalEObject)coolantCondition;
			coolantCondition = (EA_Model.IEC61970.Domain.Float)eResolveProxy(oldCoolantCondition);
			if (coolantCondition != oldCoolantCondition) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__COOLANT_CONDITION, oldCoolantCondition, coolantCondition));
			}
		}
		return coolantCondition;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Float basicGetCoolantCondition() {
		return coolantCondition;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setCoolantCondition(EA_Model.IEC61970.Domain.Float newCoolantCondition) {
		EA_Model.IEC61970.Domain.Float oldCoolantCondition = coolantCondition;
		coolantCondition = newCoolantCondition;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__COOLANT_CONDITION, oldCoolantCondition, coolantCondition));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public CoolantType getCoolantType() {
		return coolantType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setCoolantType(CoolantType newCoolantType) {
		CoolantType oldCoolantType = coolantType;
		coolantType = newCoolantType == null ? COOLANT_TYPE_EDEFAULT : newCoolantType;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__COOLANT_TYPE, oldCoolantType, coolantType));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Damping getDamping() {
		if (damping != null && damping.eIsProxy()) {
			InternalEObject oldDamping = (InternalEObject)damping;
			damping = (Damping)eResolveProxy(oldDamping);
			if (damping != oldDamping) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__DAMPING, oldDamping, damping));
			}
		}
		return damping;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Damping basicGetDamping() {
		return damping;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setDamping(Damping newDamping) {
		Damping oldDamping = damping;
		damping = newDamping;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__DAMPING, oldDamping, damping));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PU getInertia() {
		if (inertia != null && inertia.eIsProxy()) {
			InternalEObject oldInertia = (InternalEObject)inertia;
			inertia = (PU)eResolveProxy(oldInertia);
			if (inertia != oldInertia) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__INERTIA, oldInertia, inertia));
			}
		}
		return inertia;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PU basicGetInertia() {
		return inertia;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setInertia(PU newInertia) {
		PU oldInertia = inertia;
		inertia = newInertia;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__INERTIA, oldInertia, inertia));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Seconds getManualToAVR() {
		if (manualToAVR != null && manualToAVR.eIsProxy()) {
			InternalEObject oldManualToAVR = (InternalEObject)manualToAVR;
			manualToAVR = (Seconds)eResolveProxy(oldManualToAVR);
			if (manualToAVR != oldManualToAVR) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__MANUAL_TO_AVR, oldManualToAVR, manualToAVR));
			}
		}
		return manualToAVR;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Seconds basicGetManualToAVR() {
		return manualToAVR;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setManualToAVR(Seconds newManualToAVR) {
		Seconds oldManualToAVR = manualToAVR;
		manualToAVR = newManualToAVR;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__MANUAL_TO_AVR, oldManualToAVR, manualToAVR));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ReactivePower getMaxQ() {
		if (maxQ != null && maxQ.eIsProxy()) {
			InternalEObject oldMaxQ = (InternalEObject)maxQ;
			maxQ = (ReactivePower)eResolveProxy(oldMaxQ);
			if (maxQ != oldMaxQ) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__MAX_Q, oldMaxQ, maxQ));
			}
		}
		return maxQ;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ReactivePower basicGetMaxQ() {
		return maxQ;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMaxQ(ReactivePower newMaxQ) {
		ReactivePower oldMaxQ = maxQ;
		maxQ = newMaxQ;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__MAX_Q, oldMaxQ, maxQ));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Voltage getMaxU() {
		if (maxU != null && maxU.eIsProxy()) {
			InternalEObject oldMaxU = (InternalEObject)maxU;
			maxU = (Voltage)eResolveProxy(oldMaxU);
			if (maxU != oldMaxU) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__MAX_U, oldMaxU, maxU));
			}
		}
		return maxU;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Voltage basicGetMaxU() {
		return maxU;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMaxU(Voltage newMaxU) {
		Voltage oldMaxU = maxU;
		maxU = newMaxU;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__MAX_U, oldMaxU, maxU));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ReactivePower getMinQ() {
		if (minQ != null && minQ.eIsProxy()) {
			InternalEObject oldMinQ = (InternalEObject)minQ;
			minQ = (ReactivePower)eResolveProxy(oldMinQ);
			if (minQ != oldMinQ) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__MIN_Q, oldMinQ, minQ));
			}
		}
		return minQ;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ReactivePower basicGetMinQ() {
		return minQ;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMinQ(ReactivePower newMinQ) {
		ReactivePower oldMinQ = minQ;
		minQ = newMinQ;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__MIN_Q, oldMinQ, minQ));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Voltage getMinU() {
		if (minU != null && minU.eIsProxy()) {
			InternalEObject oldMinU = (InternalEObject)minU;
			minU = (Voltage)eResolveProxy(oldMinU);
			if (minU != oldMinU) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__MIN_U, oldMinU, minU));
			}
		}
		return minU;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Voltage basicGetMinU() {
		return minU;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMinU(Voltage newMinU) {
		Voltage oldMinU = minU;
		minU = newMinU;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__MIN_U, oldMinU, minU));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public SynchronousMachineOperatingMode getOperatingMode() {
		return operatingMode;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setOperatingMode(SynchronousMachineOperatingMode newOperatingMode) {
		SynchronousMachineOperatingMode oldOperatingMode = operatingMode;
		operatingMode = newOperatingMode == null ? OPERATING_MODE_EDEFAULT : newOperatingMode;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__OPERATING_MODE, oldOperatingMode, operatingMode));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PerCent getQPercent() {
		if (qPercent != null && qPercent.eIsProxy()) {
			InternalEObject oldQPercent = (InternalEObject)qPercent;
			qPercent = (PerCent)eResolveProxy(oldQPercent);
			if (qPercent != oldQPercent) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__QPERCENT, oldQPercent, qPercent));
			}
		}
		return qPercent;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PerCent basicGetQPercent() {
		return qPercent;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setQPercent(PerCent newQPercent) {
		PerCent oldQPercent = qPercent;
		qPercent = newQPercent;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__QPERCENT, oldQPercent, qPercent));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Resistance getR() {
		if (r != null && r.eIsProxy()) {
			InternalEObject oldR = (InternalEObject)r;
			r = (Resistance)eResolveProxy(oldR);
			if (r != oldR) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__R, oldR, r));
			}
		}
		return r;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Resistance basicGetR() {
		return r;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setR(Resistance newR) {
		Resistance oldR = r;
		r = newR;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__R, oldR, r));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Resistance getR0() {
		if (r0 != null && r0.eIsProxy()) {
			InternalEObject oldR0 = (InternalEObject)r0;
			r0 = (Resistance)eResolveProxy(oldR0);
			if (r0 != oldR0) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__R0, oldR0, r0));
			}
		}
		return r0;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Resistance basicGetR0() {
		return r0;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setR0(Resistance newR0) {
		Resistance oldR0 = r0;
		r0 = newR0;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__R0, oldR0, r0));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Resistance getR2() {
		if (r2 != null && r2.eIsProxy()) {
			InternalEObject oldR2 = (InternalEObject)r2;
			r2 = (Resistance)eResolveProxy(oldR2);
			if (r2 != oldR2) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__R2, oldR2, r2));
			}
		}
		return r2;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Resistance basicGetR2() {
		return r2;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setR2(Resistance newR2) {
		Resistance oldR2 = r2;
		r2 = newR2;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__R2, oldR2, r2));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ApparentPower getRatedS() {
		if (ratedS != null && ratedS.eIsProxy()) {
			InternalEObject oldRatedS = (InternalEObject)ratedS;
			ratedS = (ApparentPower)eResolveProxy(oldRatedS);
			if (ratedS != oldRatedS) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__RATED_S, oldRatedS, ratedS));
			}
		}
		return ratedS;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ApparentPower basicGetRatedS() {
		return ratedS;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setRatedS(ApparentPower newRatedS) {
		ApparentPower oldRatedS = ratedS;
		ratedS = newRatedS;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__RATED_S, oldRatedS, ratedS));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Integer getReferencePriority() {
		if (referencePriority != null && referencePriority.eIsProxy()) {
			InternalEObject oldReferencePriority = (InternalEObject)referencePriority;
			referencePriority = (EA_Model.IEC61970.Domain.Integer)eResolveProxy(oldReferencePriority);
			if (referencePriority != oldReferencePriority) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__REFERENCE_PRIORITY, oldReferencePriority, referencePriority));
			}
		}
		return referencePriority;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EA_Model.IEC61970.Domain.Integer basicGetReferencePriority() {
		return referencePriority;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setReferencePriority(EA_Model.IEC61970.Domain.Integer newReferencePriority) {
		EA_Model.IEC61970.Domain.Integer oldReferencePriority = referencePriority;
		referencePriority = newReferencePriority;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__REFERENCE_PRIORITY, oldReferencePriority, referencePriority));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public SynchronousMachineType getType() {
		return type;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setType(SynchronousMachineType newType) {
		SynchronousMachineType oldType = type;
		type = newType == null ? TYPE_EDEFAULT : newType;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__TYPE, oldType, type));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance getX() {
		if (x != null && x.eIsProxy()) {
			InternalEObject oldX = (InternalEObject)x;
			x = (Reactance)eResolveProxy(oldX);
			if (x != oldX) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__X, oldX, x));
			}
		}
		return x;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance basicGetX() {
		return x;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setX(Reactance newX) {
		Reactance oldX = x;
		x = newX;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__X, oldX, x));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance getX0() {
		if (x0 != null && x0.eIsProxy()) {
			InternalEObject oldX0 = (InternalEObject)x0;
			x0 = (Reactance)eResolveProxy(oldX0);
			if (x0 != oldX0) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__X0, oldX0, x0));
			}
		}
		return x0;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance basicGetX0() {
		return x0;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setX0(Reactance newX0) {
		Reactance oldX0 = x0;
		x0 = newX0;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__X0, oldX0, x0));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance getX2() {
		if (x2 != null && x2.eIsProxy()) {
			InternalEObject oldX2 = (InternalEObject)x2;
			x2 = (Reactance)eResolveProxy(oldX2);
			if (x2 != oldX2) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__X2, oldX2, x2));
			}
		}
		return x2;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance basicGetX2() {
		return x2;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setX2(Reactance newX2) {
		Reactance oldX2 = x2;
		x2 = newX2;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__X2, oldX2, x2));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance getXDirectSubtrans() {
		if (xDirectSubtrans != null && xDirectSubtrans.eIsProxy()) {
			InternalEObject oldXDirectSubtrans = (InternalEObject)xDirectSubtrans;
			xDirectSubtrans = (Reactance)eResolveProxy(oldXDirectSubtrans);
			if (xDirectSubtrans != oldXDirectSubtrans) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_SUBTRANS, oldXDirectSubtrans, xDirectSubtrans));
			}
		}
		return xDirectSubtrans;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance basicGetXDirectSubtrans() {
		return xDirectSubtrans;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setXDirectSubtrans(Reactance newXDirectSubtrans) {
		Reactance oldXDirectSubtrans = xDirectSubtrans;
		xDirectSubtrans = newXDirectSubtrans;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_SUBTRANS, oldXDirectSubtrans, xDirectSubtrans));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance getXDirectSync() {
		if (xDirectSync != null && xDirectSync.eIsProxy()) {
			InternalEObject oldXDirectSync = (InternalEObject)xDirectSync;
			xDirectSync = (Reactance)eResolveProxy(oldXDirectSync);
			if (xDirectSync != oldXDirectSync) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_SYNC, oldXDirectSync, xDirectSync));
			}
		}
		return xDirectSync;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance basicGetXDirectSync() {
		return xDirectSync;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setXDirectSync(Reactance newXDirectSync) {
		Reactance oldXDirectSync = xDirectSync;
		xDirectSync = newXDirectSync;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_SYNC, oldXDirectSync, xDirectSync));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance getXDirectTrans() {
		if (xDirectTrans != null && xDirectTrans.eIsProxy()) {
			InternalEObject oldXDirectTrans = (InternalEObject)xDirectTrans;
			xDirectTrans = (Reactance)eResolveProxy(oldXDirectTrans);
			if (xDirectTrans != oldXDirectTrans) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_TRANS, oldXDirectTrans, xDirectTrans));
			}
		}
		return xDirectTrans;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance basicGetXDirectTrans() {
		return xDirectTrans;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setXDirectTrans(Reactance newXDirectTrans) {
		Reactance oldXDirectTrans = xDirectTrans;
		xDirectTrans = newXDirectTrans;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_TRANS, oldXDirectTrans, xDirectTrans));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance getXQuadSubtrans() {
		if (xQuadSubtrans != null && xQuadSubtrans.eIsProxy()) {
			InternalEObject oldXQuadSubtrans = (InternalEObject)xQuadSubtrans;
			xQuadSubtrans = (Reactance)eResolveProxy(oldXQuadSubtrans);
			if (xQuadSubtrans != oldXQuadSubtrans) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_SUBTRANS, oldXQuadSubtrans, xQuadSubtrans));
			}
		}
		return xQuadSubtrans;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance basicGetXQuadSubtrans() {
		return xQuadSubtrans;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setXQuadSubtrans(Reactance newXQuadSubtrans) {
		Reactance oldXQuadSubtrans = xQuadSubtrans;
		xQuadSubtrans = newXQuadSubtrans;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_SUBTRANS, oldXQuadSubtrans, xQuadSubtrans));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance getXQuadSync() {
		if (xQuadSync != null && xQuadSync.eIsProxy()) {
			InternalEObject oldXQuadSync = (InternalEObject)xQuadSync;
			xQuadSync = (Reactance)eResolveProxy(oldXQuadSync);
			if (xQuadSync != oldXQuadSync) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_SYNC, oldXQuadSync, xQuadSync));
			}
		}
		return xQuadSync;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance basicGetXQuadSync() {
		return xQuadSync;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setXQuadSync(Reactance newXQuadSync) {
		Reactance oldXQuadSync = xQuadSync;
		xQuadSync = newXQuadSync;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_SYNC, oldXQuadSync, xQuadSync));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance getXQuadTrans() {
		if (xQuadTrans != null && xQuadTrans.eIsProxy()) {
			InternalEObject oldXQuadTrans = (InternalEObject)xQuadTrans;
			xQuadTrans = (Reactance)eResolveProxy(oldXQuadTrans);
			if (xQuadTrans != oldXQuadTrans) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_TRANS, oldXQuadTrans, xQuadTrans));
			}
		}
		return xQuadTrans;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Reactance basicGetXQuadTrans() {
		return xQuadTrans;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setXQuadTrans(Reactance newXQuadTrans) {
		Reactance oldXQuadTrans = xQuadTrans;
		xQuadTrans = newXQuadTrans;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_TRANS, oldXQuadTrans, xQuadTrans));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object eGet(int featureID, boolean resolve, boolean coreType) {
		switch (featureID) {
			case WiresPackage.SYNCHRONOUS_MACHINE__AVR_TO_MANUAL_LAG:
				if (resolve) return getAVRToManualLag();
				return basicGetAVRToManualLag();
			case WiresPackage.SYNCHRONOUS_MACHINE__AVR_TO_MANUAL_LEAD:
				if (resolve) return getAVRToManualLead();
				return basicGetAVRToManualLead();
			case WiresPackage.SYNCHRONOUS_MACHINE__BASE_Q:
				if (resolve) return getBaseQ();
				return basicGetBaseQ();
			case WiresPackage.SYNCHRONOUS_MACHINE__CONDENSER_P:
				if (resolve) return getCondenserP();
				return basicGetCondenserP();
			case WiresPackage.SYNCHRONOUS_MACHINE__COOLANT_CONDITION:
				if (resolve) return getCoolantCondition();
				return basicGetCoolantCondition();
			case WiresPackage.SYNCHRONOUS_MACHINE__COOLANT_TYPE:
				return getCoolantType();
			case WiresPackage.SYNCHRONOUS_MACHINE__DAMPING:
				if (resolve) return getDamping();
				return basicGetDamping();
			case WiresPackage.SYNCHRONOUS_MACHINE__INERTIA:
				if (resolve) return getInertia();
				return basicGetInertia();
			case WiresPackage.SYNCHRONOUS_MACHINE__MANUAL_TO_AVR:
				if (resolve) return getManualToAVR();
				return basicGetManualToAVR();
			case WiresPackage.SYNCHRONOUS_MACHINE__MAX_Q:
				if (resolve) return getMaxQ();
				return basicGetMaxQ();
			case WiresPackage.SYNCHRONOUS_MACHINE__MAX_U:
				if (resolve) return getMaxU();
				return basicGetMaxU();
			case WiresPackage.SYNCHRONOUS_MACHINE__MIN_Q:
				if (resolve) return getMinQ();
				return basicGetMinQ();
			case WiresPackage.SYNCHRONOUS_MACHINE__MIN_U:
				if (resolve) return getMinU();
				return basicGetMinU();
			case WiresPackage.SYNCHRONOUS_MACHINE__OPERATING_MODE:
				return getOperatingMode();
			case WiresPackage.SYNCHRONOUS_MACHINE__QPERCENT:
				if (resolve) return getQPercent();
				return basicGetQPercent();
			case WiresPackage.SYNCHRONOUS_MACHINE__R:
				if (resolve) return getR();
				return basicGetR();
			case WiresPackage.SYNCHRONOUS_MACHINE__R0:
				if (resolve) return getR0();
				return basicGetR0();
			case WiresPackage.SYNCHRONOUS_MACHINE__R2:
				if (resolve) return getR2();
				return basicGetR2();
			case WiresPackage.SYNCHRONOUS_MACHINE__RATED_S:
				if (resolve) return getRatedS();
				return basicGetRatedS();
			case WiresPackage.SYNCHRONOUS_MACHINE__REFERENCE_PRIORITY:
				if (resolve) return getReferencePriority();
				return basicGetReferencePriority();
			case WiresPackage.SYNCHRONOUS_MACHINE__TYPE:
				return getType();
			case WiresPackage.SYNCHRONOUS_MACHINE__X:
				if (resolve) return getX();
				return basicGetX();
			case WiresPackage.SYNCHRONOUS_MACHINE__X0:
				if (resolve) return getX0();
				return basicGetX0();
			case WiresPackage.SYNCHRONOUS_MACHINE__X2:
				if (resolve) return getX2();
				return basicGetX2();
			case WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_SUBTRANS:
				if (resolve) return getXDirectSubtrans();
				return basicGetXDirectSubtrans();
			case WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_SYNC:
				if (resolve) return getXDirectSync();
				return basicGetXDirectSync();
			case WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_TRANS:
				if (resolve) return getXDirectTrans();
				return basicGetXDirectTrans();
			case WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_SUBTRANS:
				if (resolve) return getXQuadSubtrans();
				return basicGetXQuadSubtrans();
			case WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_SYNC:
				if (resolve) return getXQuadSync();
				return basicGetXQuadSync();
			case WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_TRANS:
				if (resolve) return getXQuadTrans();
				return basicGetXQuadTrans();
		}
		return super.eGet(featureID, resolve, coreType);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eSet(int featureID, Object newValue) {
		switch (featureID) {
			case WiresPackage.SYNCHRONOUS_MACHINE__AVR_TO_MANUAL_LAG:
				setAVRToManualLag((Seconds)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__AVR_TO_MANUAL_LEAD:
				setAVRToManualLead((Seconds)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__BASE_Q:
				setBaseQ((ReactivePower)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__CONDENSER_P:
				setCondenserP((ActivePower)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__COOLANT_CONDITION:
				setCoolantCondition((EA_Model.IEC61970.Domain.Float)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__COOLANT_TYPE:
				setCoolantType((CoolantType)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__DAMPING:
				setDamping((Damping)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__INERTIA:
				setInertia((PU)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__MANUAL_TO_AVR:
				setManualToAVR((Seconds)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__MAX_Q:
				setMaxQ((ReactivePower)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__MAX_U:
				setMaxU((Voltage)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__MIN_Q:
				setMinQ((ReactivePower)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__MIN_U:
				setMinU((Voltage)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__OPERATING_MODE:
				setOperatingMode((SynchronousMachineOperatingMode)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__QPERCENT:
				setQPercent((PerCent)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__R:
				setR((Resistance)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__R0:
				setR0((Resistance)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__R2:
				setR2((Resistance)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__RATED_S:
				setRatedS((ApparentPower)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__REFERENCE_PRIORITY:
				setReferencePriority((EA_Model.IEC61970.Domain.Integer)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__TYPE:
				setType((SynchronousMachineType)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__X:
				setX((Reactance)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__X0:
				setX0((Reactance)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__X2:
				setX2((Reactance)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_SUBTRANS:
				setXDirectSubtrans((Reactance)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_SYNC:
				setXDirectSync((Reactance)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_TRANS:
				setXDirectTrans((Reactance)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_SUBTRANS:
				setXQuadSubtrans((Reactance)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_SYNC:
				setXQuadSync((Reactance)newValue);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_TRANS:
				setXQuadTrans((Reactance)newValue);
				return;
		}
		super.eSet(featureID, newValue);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eUnset(int featureID) {
		switch (featureID) {
			case WiresPackage.SYNCHRONOUS_MACHINE__AVR_TO_MANUAL_LAG:
				setAVRToManualLag((Seconds)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__AVR_TO_MANUAL_LEAD:
				setAVRToManualLead((Seconds)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__BASE_Q:
				setBaseQ((ReactivePower)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__CONDENSER_P:
				setCondenserP((ActivePower)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__COOLANT_CONDITION:
				setCoolantCondition((EA_Model.IEC61970.Domain.Float)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__COOLANT_TYPE:
				setCoolantType(COOLANT_TYPE_EDEFAULT);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__DAMPING:
				setDamping((Damping)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__INERTIA:
				setInertia((PU)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__MANUAL_TO_AVR:
				setManualToAVR((Seconds)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__MAX_Q:
				setMaxQ((ReactivePower)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__MAX_U:
				setMaxU((Voltage)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__MIN_Q:
				setMinQ((ReactivePower)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__MIN_U:
				setMinU((Voltage)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__OPERATING_MODE:
				setOperatingMode(OPERATING_MODE_EDEFAULT);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__QPERCENT:
				setQPercent((PerCent)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__R:
				setR((Resistance)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__R0:
				setR0((Resistance)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__R2:
				setR2((Resistance)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__RATED_S:
				setRatedS((ApparentPower)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__REFERENCE_PRIORITY:
				setReferencePriority((EA_Model.IEC61970.Domain.Integer)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__TYPE:
				setType(TYPE_EDEFAULT);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__X:
				setX((Reactance)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__X0:
				setX0((Reactance)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__X2:
				setX2((Reactance)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_SUBTRANS:
				setXDirectSubtrans((Reactance)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_SYNC:
				setXDirectSync((Reactance)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_TRANS:
				setXDirectTrans((Reactance)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_SUBTRANS:
				setXQuadSubtrans((Reactance)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_SYNC:
				setXQuadSync((Reactance)null);
				return;
			case WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_TRANS:
				setXQuadTrans((Reactance)null);
				return;
		}
		super.eUnset(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean eIsSet(int featureID) {
		switch (featureID) {
			case WiresPackage.SYNCHRONOUS_MACHINE__AVR_TO_MANUAL_LAG:
				return aVRToManualLag != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__AVR_TO_MANUAL_LEAD:
				return aVRToManualLead != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__BASE_Q:
				return baseQ != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__CONDENSER_P:
				return condenserP != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__COOLANT_CONDITION:
				return coolantCondition != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__COOLANT_TYPE:
				return coolantType != COOLANT_TYPE_EDEFAULT;
			case WiresPackage.SYNCHRONOUS_MACHINE__DAMPING:
				return damping != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__INERTIA:
				return inertia != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__MANUAL_TO_AVR:
				return manualToAVR != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__MAX_Q:
				return maxQ != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__MAX_U:
				return maxU != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__MIN_Q:
				return minQ != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__MIN_U:
				return minU != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__OPERATING_MODE:
				return operatingMode != OPERATING_MODE_EDEFAULT;
			case WiresPackage.SYNCHRONOUS_MACHINE__QPERCENT:
				return qPercent != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__R:
				return r != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__R0:
				return r0 != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__R2:
				return r2 != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__RATED_S:
				return ratedS != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__REFERENCE_PRIORITY:
				return referencePriority != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__TYPE:
				return type != TYPE_EDEFAULT;
			case WiresPackage.SYNCHRONOUS_MACHINE__X:
				return x != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__X0:
				return x0 != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__X2:
				return x2 != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_SUBTRANS:
				return xDirectSubtrans != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_SYNC:
				return xDirectSync != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__XDIRECT_TRANS:
				return xDirectTrans != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_SUBTRANS:
				return xQuadSubtrans != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_SYNC:
				return xQuadSync != null;
			case WiresPackage.SYNCHRONOUS_MACHINE__XQUAD_TRANS:
				return xQuadTrans != null;
		}
		return super.eIsSet(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public String toString() {
		if (eIsProxy()) return super.toString();

		StringBuffer result = new StringBuffer(super.toString());
		result.append(" (coolantType: ");
		result.append(coolantType);
		result.append(", operatingMode: ");
		result.append(operatingMode);
		result.append(", type: ");
		result.append(type);
		result.append(')');
		return result.toString();
	}

} //SynchronousMachineImpl
